#include<iostream>
using namespace std;
const int N = 1e6;
int n;
int q[N], temp[N];
void quick_sort(int q[], int l, int r)  //快速排序
{
	if(l >= r)
		return;
	int x = q[l], i = l - 1, j = r + 1;
	while(i < j){
		do i++; while(q[i] < x);
		do j--; while(q[j] > x);
		if(i < j) swap(q[i], q[j]);
	}
	quick_sort(q, l, j);
	quick_sort(q, j + 1, r);
}

void merge_sort(int q[], int l, int r)  //归并排序  AC
{
	if(l >= r)
		return;
	int mid = (l + r) >> 1;
	merge_sort(q, l, mid), merge_sort(q, mid + 1, r);
	int k = 0, i = l, j =mid + 1;
	while(i <= mid && j <= r){
		if(q[i] <= q[j]) 
			temp[k++] = q[i++];
		else 
			temp[k++] = q[j++];
	}
	while(i <= mid) 
		temp[k++] = q[i++];
	while(j <= r) 
		temp[k++] = q[j++];
	for(i = l, j = 0; i <= r; i++, j++)
		q[i] = temp[j];
}

int main()
{
	scanf("%d", &n);
	for(int i = 0; i < n; i++){
		scanf("%d", &q[i]);
	}
	merge_sort(q, 0, n - 1);
	for(int i = 0; i < n; i++){
		printf("%d ", q[i]);
	}
	return 0;
}
